SAFE Logo
CodeMatch Detailed Report
Version: 5.7.2 | Date: 08/27/16 | Time: 18:44:41

SCORE

SETTINGS
Compare file 1: Z:\Zeidman Consulting\projects\DOS and CPM\code\CHM\CPM\1.3\PIP.plm
To file 2: Z:\Zeidman Consulting\projects\DOS and CPM\code\CHM\CPM\1.3\PIP.plm
Links to results: Matching Statements
Matching Comments and Strings
Matching Instruction Sequences
Matching Identifiers
Partially Matching Identifiers
Score
RESULTS
Matching Statements
File1 Line# File2 Line# Statement
11PIPMOD:
88DECLARE COPYRIGHT(*) BYTE DATA (
1111DECLARE INPLOC ADDRESS DATA (183H)
1212DECLARE OUTLOC ADDRESS DATA (106H)
1414OUT: PROCEDURE (B)
15
466
530
538
15
466
530
538
DECLARE B BYTE
1717CALL OUTLOC
1818END OUT
2020INP: PROCEDURE BYTE
2121CALL INPLOC
23
123
23
123
RETURN 0
2424END INP
2626TIMEOUT: PROCEDURE
28
28
28
28
CALL TIME(250)
2929END TIMEOUT
3333LIT LITERALLY ,
3434ENDFILE LIT ,
3535TAB LIT ,
3636LA LIT ,
3737LB LIT ,
3838RB LIT ,
3939XOFF LIT ,
4141RDR LIT ,
4242LST LIT ,
4343PUMP LIT ,
4444CONP LIT ,
4545NULP LIT ,
4646EOFP LIT ,
4747HSRDR LIT ,
4848PRNT LIT ,
5050FSIZE LIT ,
5151NSIZE LIT ,
5252FNSIZE LIT ,
5353MDISK LIT ,
5454FNAM LIT ,
5555FEXT LIT ,
5656FEXTL LIT ,
5757FREEL LIT ,
5858HBUFS LIT ,
6060ERR LIT ,
6161SPECL LIT ,
6262FILE LIT ,
6363PERIPH LIT ,
6464DISK NAME LIT
6767EXIT ADDRESS INITIAL(0H),
6868COLUMN BYTE,
6969AMBIG BYTE,
7070PARSET BYTE,
7171FEEDBASE BYTE,
7272FEEDLEN BYTE,
7373MATCHLEN BYTE,
7474QUITLEN BYTE,
7575NBUF BYTE,
7676CDISK BYTE,
7777BUFFER (128) BYTE AT (8BH),
7878SEARFCB (FSIZE) BYTE AT (5CH),
7979MEMSIZE ADDRESS AT (6H),
8080SBLEN ADDRESS,
8181DBLEN ADDRESS,
8282SBASE ADDRESS,
8585DBUFF (1024) BYTE AT (.MEMORY),
8686SBUFF BASED SBASE (1024) BYTE,
8787SDISK BYTE,
8888(SCOM, DHEX) BYTE,
9090SOURCE (FSIZE) BYTE,
9191DEST (FSIZE) BYTE,
9292DDISK BYTE,
9393HBUFF(HBUFS) BYTE,
9494HSOURCE BYTE,
9696NSOURCE ADDRESS,
9797HARDEOF ADDRESS,
9898NDEST ADDRESS
101101PDEST BYTE,
102102PSOURCE BYTE
105105MULTCOM BYTE,
106106PUTNUM BYTE,
107107CONCNT BYTE,
108108CHAR BYTE,
109109TYPE BYTE,
110110FLEN BYTE
112112$INCLUDE (:F1:CPIO.PLB)
113113MON1: PROCEDURE(F,A)
114
120
114
120
DECLARE F BYTE,
115
121
115
121
A ADDRESS
116116L1: GO TO L1
117117END MON1
119119MON2: PROCEDURE(F,A) BYTE
122122L2: GO TO L2
124124END MON2
126126READRDR: PROCEDURE BYTE
128128RETURN MON2(3,0)
129129END READRDR
131131READCHAR: PROCEDURE BYTE
133133RETURN MON2(1,8)
134134END READCHAR
137137TRUE LITERALLY ,
138138FALSE LITERALLY ,
139139FOREVER LITERALLY ,
140140CR LITERALLY ,
141141LF LITERALLY ,
142142WHAT LITERALLY
144144PRINTCHAR: PROCEDURE (CHAR)
145
641
145
641
DECLARE CHAR BYTE
146146CALL MON1(2,CHAR)
147147END PRINTCHAR
149149CRLF: PROCEDURE
150150CALL PRINTCMAR(CR)
151151CALL PRINTCHAR(LF)
152152END CRLF
154154PRINT: PROCEDURE(A)
155
264
889
924
155
264
889
924
DECLARE A ADDRESS
158
302
1037
1040
1171
1192
1256
158
302
1037
1040
1171
1192
1256
CALL CRLF
159159CALL MON1(9,A)
160160END PRINT
162162DECLARE DCNT BYTE
164164INITIALIZE: PROCEDURE
165165CALL MON1(13,0)
166166END INITIALIZE
168168SELECT: PROCEDURE(D)
169
472
169
472
DECLARE D BYTE
170170CALL MON1(14,D)
171171END SELECT
173173OPEN: PROCEDURE(FCB)
174
179
184
193
198
203
208
213
174
179
184
193
198
203
208
213
DECLARE FCB ADDRESS
175175DCNT = MON2(15,FCB)
176176END OPEN
178178CLOSE: PROCEDURE(FCB)
180180DCNT = MON2(16,FCB)
181181END CLOSE
183183SEARCH: PROCEDURE(FCB)
185185DCNT = MON2(17,FCB)
186186END SEARCH
188188SEARCHN: PROCEDURE
189189DCNT = MON2(18,0)
190190END SEARCHN
192192DELETE: PROCEDURE(FCB)
194194CALL MON1(19,FCB)
195195END DELETE
197197DISKREAD: PROCEDURE(FCB) BYTE
199199RETURN MON2(20,FCB)
200200END DISKREAD
202202DISKWRITE: PROCEDURE(FCB) BYTE
204204RETURN MON2(21,FCB)
205205END DISKWRITE
207207MAKE: PROCEDURE(FCB)
209209DCNT = MON2(22,FCB)
210210END MAKE
212212RENAME: PROCEDURE(FCB)
214214CALL MON1(23,FCB)
215215END RENAME
217217DECLARE CBUFF(130) BYTE,
218218MAXLEN BYTE AT (.CBUFF(0)),
219219COMLEN BYTE AT (.CBUFF(1)),
220220COMBUFF (128) BYTE AT (.CBUFF(2)),
221221DECLARE (TCBP,CBP) BYTE
223223READCOM: PROCEDURE
225225MAXLEN = 128
226226CALL MON1(10, MAXLEN)
227227END READCOM
229229DECLARE MCBP BYTE
231231CONBRK: PROCEDURE BYTE
233233RETURN MON2(11,0)
234234END CONBRK
236236DECLARE IOBYTE BYTE AT (3H)
239239CONT(26) BYTE,
244244BLOCK BYTE AT(.CONT(1)),
245245DELET BYTE AT(.CONT(3)),
246246ECHO BYTE AT(.CONT(4)),
247247NEXT BYTE AT(.CONT(7)),
248248IGNOR BYTE AT(.CONT(8)),
249249LOWER BYTE AT(.CONT(11)),
250250NUMB BYTE AT(.CONT(13)),
251251OBJ BYTE AT(.CONT(14)),
252252QUITS BYTE AT(.CONT(16)),
253253STARTS BYTE AT(.CONT(18)),
254254TABS BYTE AT(.CONT(19)),
255255UPPER BYTE AT(.CONT(20)),
256256VERIF BYTE AT(.CONT(21)),
257257ZEROP BYTE AT(.CONT(25))
259259LIFTHEAD: PROCEDURE
260260CALL MON1(12,B)
261261END LIFTHEAD
263263SETDMA: PROCEDURE(A)
265265CALL MON1(26,A)
266266END SETDMA
270270INTIN: PROCEDURE BYTE
272272DECLARE PTRI LITERALLY ,
273273PTRS LITERALLY ,
274274PTRC LITERALLY ,
276276PTRG LITERALLY ,
277277PTPH LITERALLY
280280OUTPUT(PTRC) = PTRG
281281OUTPUT(PTRC) = PTRH
282282DO WHILE NOT ROL(INPUT(PTRS),3)
285285RETURN INPUT(PTRI) AND 7FH
286286END INTIN
288288DECLARE ZEROSUP BYTE
289289(C3,C2,C1) BYTE
291291ERROR: PROCEDURE(A)
292292DECLARE A ADDRESS, I BYTE
293
927
293
927
CALL PRINT(A)
293
293
1255
293
293
1255
CALL PRINTCHAR( )
294294DO I = TCBP TO CBP
295295IF I < COMLEN THEN CALL PRINTCHAR(COMBUFF(I))
299299COMLEN = 0
301301CALL DELETE(.(0, ,0))
303303GO TO RETRY
304304END ERROR
306306MOVE: PROCEDURE(S,D,N)
307307DECLARE (S,D ) ADDRESS, N BYTE
308308DECLARE A BASED S BYTE, B BASED D BYTE
309309DO WHILE (N:=N-1) <> 255
310310B = A
310310S = S+1
310310D = D+1
312312END MOVE
314314FILLSOURCE: PROCEDURE
316
732
316
732
DECLARE (I,J) BYTE
317
331
317
331
NSOURCE = 0
318
1061
1183
318
1061
1183
CALL SELECT(SDISK)
319319DO I = 0 TO NBUF
321321CALL SETDMA(.SBUFF(NSOURCE))
322322IF (J := DISKREAD(.SOURCE)) <> 0 THEN
323323IF J <> I THEN
324
355
383
422
598
629
739
1046
1073
1075
1192
1311
1328
1343
1364
324
355
383
422
598
629
739
1046
1073
1075
1192
1311
1328
1343
1364
CALL ERROR(.( ))
326326HARDEOF = NSOURCE
327327SBUFF(NSOURCE) = ENDFILE
327327I = NBUF
329329NSOURCE = NSOURCE + 128
332332END FILLSOURCE
334334WRITEDEST: PROCEDURE
337337DECLARE (I, J, N) BYTE
338338DECLARE DMA ADDRESS
339339DECLARE (EXTCNT, DATAOK) BYTE
340340IF (N := LOW(SHR(NDEST,7)) - 1) = 255 THEN RETURN
341341EXTCNT,NDEST = 0
342
1050
1085
342
1050
1085
CALL SELECT(DDISK)
343343DO I = 0 TO N
345345DMA = .DBUFF(NDEST)
346
358
346
358
IF VERIF THEN
348348IF DEST(32) = 127 THEN
349349CALL MOVE(DMA,80H,80H)
350350DMA = 80H
350350EXTCNT = EXTCNT + 1
353353CALL SETDMA(DMA)
354354IF DISKWRITE(.DEST) <> 0 THEN
356356NDEST + NDEST + 128
359359I = N + 1
360
390
360
390
NDEST = 0
361361IF EXTCNT <> 0 THEN
362
372
362
372
CALL SETDMA(80H)
362
1086
362
1086
CALL CLOSE(.DEST)
363363DEST(FREEL) = DEST(FREEL) - EXTCNT
364364J = DEST(32)
365
387
365
387
CALL OPEN (.DEST)
3673671 = 1 - 128
369369DEST (32) = (J - I) AND 7FH
371371DEST(32) = DEST (32) - 1
373373DO 1 - 0 TO N
374374DATAOK = DISKREAD(.DEST) = 0
375375J = 0
377377DO WHILE DATAOK AND J < 80H
378378DATAOK = BUFFER(J) = DBUFF(NDEST+J)
379379J = J + 1
381381NDEST = NDEST + 128
382382IF NOT DATAOK THEN
385385IF DEST(32) = 128
386386DEST(FREEL) = DEST(FREEL) + 1
391391END WRITEDEST
393393PUTDESTC: PROCEDURE(B)
394394DECLARE (B,IOB) BYTE
396396IF B >= THEN
397397COLUMN = COLUMN + 1
398398IF DELET > 0 THEN
399399IF COLUMN > DELET THEN RETURN
402
557
402
557
IOB = IOBYTE
403403DO CASE PDEST
406406IF NDEST >= DBLEN THEN CALL WRITEDEST
407407DBUFF(NDEST) = B
408408HDEST = NDEST + 1
411
413
415
417
419
411
413
415
417
419
GO TO NOTDEST
421421NOTDEST
424424CALL OUT(B)
426
432
426
432
IOBYTE = 1000$0000B
426
429
432
426
429
432
GO TO LSTL
429429IOBYTE = 1100$0000B
435435LSTL:
436436CALL MON1(5,B)
438438IOBYTE = 0001$0000B
438
441
444
438
441
444
GO TO PUNL
441441IOBYTE = 0010$0000B
444444IOBYTE = 0011$0000B
447447PUNL:
448448CALL MON1(4,B)
450
601
450
601
IOBYTE = 0
450
453
456
601
604
607
450
453
456
601
604
607
GO TO CONL
453453IOBYTE = 1
456
607
456
607
IOBYTE = 11B
459
610
459
610
CONL:
460460CALL MON1(2,B)
462
615
462
615
IOBYTE = IOB
463463END PUTDESTC
465465PRINT1: PROCEDURE(B)
467467IF (ZEROSUP = ZEROSUP AND B = 0) THEN CALL PUTDESTC( )
468468CALL PUTDESTC( + B)
469469END PRINT1
471471PRINTDIG: PROCEDURE(D)
473473CALL PRINT1(SHR(D,4))
473473CALL PRINT1(D AND 1111B)
474474END PRINTDIG
476476NEWLINE: PROCEDURE
477477ZEROSUP = 1
478478C1 = DEC(C1+ZEROSUP)
478478C2 = DEC(C2 PLUS 0)
478478C3 = DEC(C3 PLUS 0)
479479CALL PRINTDIG(C3)
479479CALL PRINTDIG(C2)
479479CALL PRINTDIG(C1)
480
516
480
516
CALL PUTDESTC( )
481481PUTNUM = FALSE
482482END NEWLINE
484484CLEARBUFF PROCEDURE
486486DECLARE HA ADDRESS
487
727
940
487
727
940
DECLARE I BYTE
488488I = LOW(NDEST) AHD 7FH
489489HA = NDEST AND 0FF80H
490
1084
1159
490
1084
1159
CALL WRITEDEST
491491CALL MOVE(.DBUFF(NA),.DBUFF,I)
493493NDEST = I
494494END CLEARBUFF
496496PUTDEST: PROCEDURE(B)
497497DECLARE (I,B) BYTE
499499IF NUMB AND PUTNUM THEN CALL NEWLINE
500500IF BLOCK THEN
502502IF B = XOFF AND PDEST = 0 THEN
503
934
1128
503
934
1128
CALL CLEARBUFF
507507IF B = TAB THEN
508508IF TABS > 0 THEN
509509I = COLUMN
510510IF NUMB THEN I = I - 7
511511DO WHILE I >= TABS
512512I = I - TABS
514514I = TABS - I
515515DO WHILE I > 0
516516I = I - I
519519ELSE CALL PUTDESTC(B)
522522CALL PUTDESTC(B)
523523IF B = CR THEN COLUMN = 0
525525PUTNUM = B = LF
527527END PUTDEST
529529UTRAN: PROCEDURE(B) BYTE
532532IF B >= 110$0001B AND B <= 111$1010B THEN
533533B = B AND 101$1111B
534
541
636
534
541
636
RETURN B
535535END UTRAN
537537LTRAN: PROCEDURE(B) BYTE
540540IF B >= AND B <= THEN B = B OR 10$0000B
542542END LTRAN
544544GETSOURCEC: PROCEDURE BYTE
546546DECLARE (IOB,B,CONCHK) BYTE
548548IF PSOURCE - 1 <= RDR THEN
549549IF (BLOCK OR NEXT) AND CONBRK THEN
551
628
551
628
IF READCHAR = ENDFILE THEN RETURN ENDFILE
552552CALL PRINT(.( ,CR,LF, ))
553553RETURN XOFF
556556CONCHK = TRUE
558558DO CASE PSOURCE
560560IF NSOURCE >= SBLEN THEN CALL FILLSOURCE
561561B = SBUFF(NSOURCE)
562562NSOURCE = NSOURCE + 1
565565B = INP
567567B = INTIN
569569IOBYTE = 0000$0100B
569
572
575
569
572
575
GO TO RDRL
572572IOBYTE = 0000$1000B
575575IOBYTE = 0000*1100B
578578RDRL:
579579B = MON 2(3,0) AND 7FH
581
583
585
587
589
591
595
581
583
585
587
589
591
595
GO TO NOTSOURCE
597597NOTSOURCE:
604604IOBYTE = 01B
611611CONCHK = FALSE
612612B = MON2(1,0)
616616IF ECHO THEN
617617IOB = PDEST
617617PDEST = CONP
617617CALL PUTDEST(B)
618618PDEST = IOB
620
625
620
625
IF CONCHK THEN
622622IF SCOM THEN
623623CONCHK = (CONCNT:= CONCNT + 1) = 0
624624CONCHK = B = LF
626626IF CONBRK THEN
633633IF ZEROP THEN B = B AND 7FH
634634IF UPPER THEN RETURN UTRAN(B)
635635IF LOWER THEN RETURN LTRAN(B)
637637END GETSOURCEC
639639GETSOURCE: PROCEDURE BYTE
642642MATCH: PROCEDURE(B) BYTE
644644DECLARE (B,C) BYTE
645645IF (C:=COMBUFF(B:=(B+MATCHLEN))) = ENDFILE THEN
646646COMBUFF(B) = CHAR
647
903
647
903
RETURN TRUE
649649IF C = CHAR THEN MATCHLEN = MATCHLEN + 1
650650MATCHLEN = 0
651
709
651
709
RETURN FALSE
652652END MATCH
653653IF QUITLEN > 0 THEN
654654IF (QUITLEN := QUITLEN - 1) = 1 THEN RETURN LF
655
950
655
950
RETURN ENDFILE
657
792
1027
1181
1250
657
792
1027
1181
1250
DO FOREVER
658658IF FEEDLEN > 0 THEN
659659FEEDLEN = FEEDLEN - 1
660660CHAR = COMBUFF(FEEDBASE)
661661FEEDBASE = FEEDBASE + 1
662
677
679
662
677
679
RETURN CHAR
664664IF (CHAR = GETSOURCEC) = ENDFILE THEN RETURN ENDFILE
665
1072
665
1072
IF STARTS > 0 THEN
666666IF MATCH(STARTS) THEN
667667FEEDBASE = STARTS
667667STARTS = 0
668668FEEDLEN = MATCHLEN + 1
671
1074
671
1074
IF QUITS > 0 THEN
672672IF MATCH(QUITS) THEN
673673QUITS = 0
673673QUITLEN = 2
675675RETURN CR
681681END GETSOURCE
683683DECLARE DISK BYTE
684684GNC: PROCEDURE BYTE
685685IF (CBP := CBP + I) >+ COMLEN THEN RETURN CR
686686RETURN UTRAN(COMBUFF(CBP))
687687END GNC
689689DEBLANK: PROCEDURE
690690DO WHILE (CHAR := GNC) =
692692END DEBLANK
694694SCAN: PROCEDURE (FCBA)
695695DECLARE FCBA ADDRESS,
696696FCB BASED FCBA (FSIZE) BYTE
697697DECLARE (I,J,K) BYTE
702702DELIMITER: PROCEDURE(C) BYTE
703
1170
703
1170
DECLARE (I,C) BYTE
704704DECLARE DEL(*) BYTE DATA
705705( ,CR,LA,LB,RB)
706706DO I = 0 TO LAST(DEL)
707707IF C = DEL(I) THEN RETURN TRUE
710710END DELIMITER
712712PUTCHAR: PROCEDURE
713713FCB(FLEN:=FLEN+1) = CHAR
714714IF CHAR = WHAT THEN AMBIG = TRUE
715715END PUTCHAR
717717FILLQ: PROCEDURE(LEN)
719719DECLARE LEN BYTE
720720CHAR = WHAT
721721DO WHILE FLEN < LEN
722
768
722
768
CALL PUTCHAR
724724END FILLQ
726726GETFCB: PROCEDURE(I) BYTE
728728RETURN FCB(I)
729729END GETFCB
731731SCANPAR: PROCEDURE
734734PARSET = TRUE
735
747
757
798
735
747
757
798
CHAR = GNC
736736DO WHILE NOT(CHAR = CR OR CHAR = RB)
737737IF (I := CHAR - ) > 25 THEN
738738IF CHAR = THEN CHAR = GNC
742742IF CHAR = OR CHAR = THEN
744744J = CBP + 1
745745DO WHILE NOT ((CHAR := GNC) = ENDFILE OR CHAR = CR)
749749IF (J := (CHAR := GNC) - ) > 9 THEN J = I
751751DO WHILE (K := (CHAR := GNC) - ) <= 9
752752J = J + 10 + K
754754CONT (I) = J
758758END SCANPAR
760760CHKSET: PROCEDURE
761761IF CHAR = LA THEN CHAR =
762762END CHKSET
765765AMBIG = FALSE
765765TYPE = ERR
765765CHAR = FLEN = 0
766766DO WHILE FLEN < FSIZE-1
767767IF FLEN = FNSIZE THEN CHAR = 0
772
809
1220
1299
772
809
1220
1299
CALL DEBLANK
775775TCBP = CBP
778
810
778
810
IF DELIMITER(CHAR) THEN
779779CALL CHKSET
780780TYPE = SPECL
784784DISK = 0
786
1145
786
1145
DO I = 0 TO 25
786786CONT(I) = 0
789789PARSET = FALSE
790790FEEDLEN,MATCHLEN,QUITLEN = 0
793793FLEN = 0
794794DO WHILE NOT DELIMITER(CHAR)
795795IF FLEN >= NSIZE THEN
797797IF CHAR = THEN CALL FILLQ(NSIZE)
797
864
797
864
ELSE CALL PUTCHAR
802802IF CHAR = THEN
803803IF DISK <> 0 THEN RETURN
804804IF FLEN = 1 THEN
807807IF (DISK := GETFCB(1) - + 1> >26 THEN
811811IF CHAR = LB THEN CALL
812812SCANPAR
813
843
869
813
843
869
CBP = CBP - 1
814814TYPE = DISKNAME
820820IF FLEN <> 3 THEN
824824DECLARE (I,J,K) BYTE, M LITERALLY ,
825825IO(*) BYTE DATA
827827,0)
833833J = 255
834834DO K = 0 TO M
835835I = 0
836836DO WHILE ((I:=I+1) <= 3) AND
837837IO(J+I) = GETFCB(I)
839839IF I = 4 THEN
840840TYPE = PERIPH
842842IF GNC = LB THEN CALL SCANPAR
843843CHAR = K
846846J = J + 3
851
866
851
866
IF CHAR = LB THEN
852
867
852
867
CALL SCANPAR
856856IF FLEN = 0 THEN
858858FLEN = FNAM
859859IF CHAR = THEN SCAN FILE TYPE */
860860DO WHILE NOT DELIMITER(CHAR := GNC)
861861IF FLEN >= FNSIZE THEN
863863IF CHAR = THEN CALL FILLQ(FNSIZE)
870870TYPE - FILE
872872IF DISK = 0 THEN DISK = CDISK + l
873873FCB(0), FCB(32) = 0
877877END SCAN
879879NULLS: PROCEDURE
881881DECLARE 1 BYTE
882882DO I = 0 TO 39
882882CALL PUTDEST(0)
884884END NULLS
886886DECLARE FEXTH(FEXTL) BYTE,
887887COPYING BYTE
888888MOVEXT: PROCEDURE(A)
891891CALL MOVE(A,.DEST(FEXT),FEXTL)
892892END MOVEXT
894894EQUAL: PROCEDURE(A,B) BYTE
897897DECLARE (A,B) ADDRESS,
898898(SA BASED A, SB BASED B) BYTE
899899DO WHILE SB <>
900900IF SB <> SA THEN RETURN FALSE
901901A = A + 1
901901B = B + 1
904904END EQUAL
906906READ$EOF: PROCEDURE BYTE
908908CHAR = GETSOURCE
909909IF SCOM THEN RETURN HARDEOF <= NSOURCE
910910RETURN CHAR = ENDFILE
911911END READ$EOF
913913HEXRECORD: PROCEDURE BYTE
919919DECLARE XOFFSET BYTE
920920DECLARE NOERRS BYTE
922922PRINTERR: PROCEDURE (A)
925
941
925
941
IF NOERRS THEN
926926NOERRS = FALSE
929929END PRINTERR
931931CHECKXOFF: PROCEDURE
932932IF XOFFSET THEN
933933XOFFSET = FALSE
936936END CHECKXOFF
938938SAVECHAR: PROCEDURE BYTE
943943DO WHILE (I := GETSOURCE) = XOFF
943943XOFFSET = TRUE
945945NBUFF(NSOURCE) = I
946946IF (NSOURCE := NSOURCE + 1) >= LAST(KBUFF) THEN
947
960
1016
947
960
1016
CALL PRINTERR(.( ))
948948RETURN I
951951END SAVECHAR
953953DECLARE (M, RL, CS, RT) BYTE
954954LDA ADDRESS
956956READHEX: PROCEDURE BYTE
957957DECLARE H BYTE
958958IF (H := SAVECHAR) - <= 9 THEN RETURN H-
959959IF H - > 5 THEN
961961RETURN H - + 10
962962END READHEX
964964READBYTE PROCEDURE BYTE
966966RETURN SHL(READHEX,4) OR READHEX
967967END READBYTE
969969READCS: PROCEDURE BYTE
971971RETURN CS := CS + READBYTE
972972END READCS
974974READADDR: PROCEDURE ADDRESS
976976RETURN SHL(DOUBLE(READCS),8) OR READCS
977977END READADDR
979979NOERRS = TRUE
983
985
983
985
HSOURCE = 0
984984DO WHILE (CS := SAVECHAR) <>
986986IF CS = ENDFILE THEN
987987CALL PRINT(.( , WHAT, ))
988988IF READCHAR = ENDFILE THEN RETURN 1
989989ELSE HSOURCE = 0
991
998
1018
991
998
1018
CALL CHECKXOFF
995995CS = 0
996996IF (RL := READCS) = 0 THEN
997997DO WHILE (RL := SAVECHAR) <> ENDFILE
10001000IF NOERRS THEN RETURN 1
1001
1020
1001
1020
RETURN 2
10051005LDA = READADDR
10081008RT = READCS
10091009DO WHILE RL <> 0 AND NOERRS
10091009RL = RL - 1
10101010M = READCS
10151015IF CS + READBYTE <> 0 THEN
10191019IF NOERRS THEN RETURN 0
10211021END HEXRECORD
10231023READTAPE: PROCEDURE
10261026DECLARE (I,A) BYTE
10281028DO WHILE (I := HEXRECORD) <= 1
10291029IF NOT (I = 1 AND IGNOR) THEN
10301030DO A = 1 TO HSOURCE
10311031CALL PUTDEST(HBUFF(A-1))
10331033CALL PUTDEST(CR)
10331033CALL PUTDEST(LF)
10341034IF I = 1 THEN
10371037HBUFF(HSOURCE) =
10381038CALL PRINT( .HBUFF)
1039
1200
1039
1200
CALL PRINT( .( ))
10411041IF READCHAR = ENDFILE THEN RETURN
10431043END READTAPE
10451045FORMERR: PROCEDURE
10471047END FORMERR
10491049SETUPDEST: PROCEDURE
10511051DHEX = AMBIG(.DEST(FEXT), ( ))
10521052CALL MOVE(.DEST(FEXT), .FEXTH,FEXTL)
1053
1091
1053
1091
CALL MOVEXT(.( ))
1053
1089
1053
1089
CALL DELETE(.DEST)
10541054CALL MAKE(.DEST)
1055
1063
1055
1063
IF DCNT = 255 THEN CALL ERROR(.( ))
10561056DEST(32),NDEST = 0
10571057END SETUPDEST
10591059SETUPSOURCE: PROCEDURE
10601060HARDEOF = 0FFFFH
10621062CALL OPEN(.SOURCE)
10641064SOURCE(32) = 0
10661066SCOM = AMBIG(.SOURCE(FEXT), .( )) OR
10671067EQUAL(.SOURCE(FEXT), .( ))
10681068NSOURCE = SBLEN
10691069END SETUPSOURCE
10711071CHECK$STRINGS: PROCEDURE
10761076END CHECK$STRINGS
10781078CLOSEDEST: PROCEDURE
10801080DO WHILE (LOW(HDEST) AnD 7FH) <> 0
1081
1370
1081
1370
CALL PUTDEST(ENDFILE)
1083
1360
1083
1360
CALL CHECK$STRINGS
10871087IF DCNT = 255 THEN CALL ERROR(.( ,WHAT, ))
10881088CALL MOVEXT(.FEXTH)
10901090CALL MOVE(.DEST,.DESK(16), 16)
10921092CALL RENAME(.DEST)
10931093END CLOSEDEST
10951095SIZE$NBUF: PROCEDURE
10971097NBUF = (SHR(DBLEN,7) AND 0FFH) - 1
11001100END SIZE$NBUF
11021102SET$DBLEN: PROCEDURE
11041104SBASE = .MEMORY
11051105IF DBLEN >= 4000H THEN DBLEN = 7F80H
11061106DBLEN = DBLEN + SBLEN
1107
1114
1107
1114
CALL SIZE$NBUF
11081108END SET$DBLEN
11101110SIZE$MEMORY: PROCEDURE
11121112SBASE = .MEMORY + SHR(MEMSIZE - .MEMORY, 1)
11131113SBLEN, DBLEN = SHR((MEMSIZE - .MEMORY) AND 0FF00H, 1)
11151115END SIZE$MEMORY
11171117COPYCHAR: PROCEDURE
11191119DECLARE RESIZED BYTE
11201120IF (RESIZED = (BLOCK AND PSOURCE <> 0)) THEN
1121
1154
1121
1154
CALL SET$DBLEN
11221122IF NEXT OR IGNOR THEN
11231123CALL READTAPE
11241124DO WHILE NOT READ$EOF
11251125CALL PUTDESK(CHAR)
11271127IF RESIZED THEN
1129
1138
1248
1129
1138
1248
CALL SIZE$MEMORY
11311131END COPYCHAR
11331133SIMPLECOPY: PROCEDURE
11341134DECLARE (FASTCOPY,I) BYTE
11351135REAL$EOF: PROCEDURE BYTE
11361136RETURN HARDEOF <> 0FFFFH
11371137END REALEOF
11391139TCBP = MCBP
1140
1317
1140
1317
CALL SETUPDEST
1141
1339
1141
1339
CALL SETUPSOURCE
11431143FASTCOPY = TRUE
11461146IF CONT(I) <> 0 THEN
11481148IF NOT(I = 14 OR I = 21) THEN
11501150FASTCOPY = FALSE
11531153IF FASTCOPY THEN
11551155DO WHILE NOT REAL$EOF
11561156CALL FILLSOURCE
11571157IF REAL$EOF THEN
11581158NDEST = HARDEOF
11581158ELSE NDEST = DBLEN
1162
1357
1162
1357
CALL COPYCHAR
1163
1373
1163
1373
CALL CLOSEDEST
11641164END SIMPLECOPY
11661166MULTCOPY: PROCEDURE
11671167DECLARE (NEXTDIR, NCOPIED) BYTE
11681168PRNAME: PROCEDURE
11721172DO I = 1 TO FNSIZE
11731173IF (C := DEST(I)) <> THEN
11741174IF I = FEXT THEN CALL PRINTCHAR( )
11751175CALL PRINTCHAR(C)
11781178END PRNAME
11801180NEXTDIR,NCOPIED = 0
11841184CALL SETDMA(.BUFFER)
11851185CALL SEARCH(.SEARFCB)
11861186DO WHILE DCNT < NEXTDIR
11871187CALL SEARCHN
11901190IF DCNT = 255 THEN
11911191IF NCOPIED = 0 THEN
11951195NEXTDIR = DCNT + 1
11971197CALL MOVE(.BUFFER+SHL(DCNT AND 11B,5), .DEST,16)
11981198CALL MOVE(.DEST,.SOURCE,16)
11991199IF (NCOPIED := NCOPIED + 1) = 1 THEN
12011201CALL PRNAME
1202
1280
1294
1302
1202
1280
1294
1302
CALL SIMPLECOPY
12041204END MULTCOPY
12061206SET$SDISK: PROCEDURE
12071207IF DISK > 0 THEN SDISK = DISK - 1
12071207ELSE SDISK = CDISK
12081208END SET$SDISK
12101210SET$DDISK: PROCEDURE
12111211IF PARSET THEN CALL FORMERR
12121212IF DISK > 0 THEN DDISK = DISK - 1
12121212ELSE DDISK = CDISK
12131213END SET$DDISK
12151215CHECK$DISK: PROCEDURE
12161216IF DDISK = SDISK THEN CALL FORMERR
12171217END CHECK$DISK
12191219CHECK$EOL: PROCEDURE
12211221IF CHAR <> CR THEN CALL FORMERR
12221222END CHECK$EOL
12241224SCANDEST: PROCEDURE(COPYFCB)
12251225DECLARE COPYFCB ADDRESS
1226
1291
1301
1338
1226
1291
1301
1338
CALL SET$SDISK
1227
1293
1227
1293
CALL CHECK$EOL
12281228CALL MOVE(.SOURCE,COPYFCB,33)
1229
1291
1229
1291
CALL CHECK$DISK
12301230END SCANDEST
12321232SCANEQL: PROCEDURE
1233
1288
1326
1334
1362
1233
1288
1326
1334
1362
CALL SCAN(.SOURCE)
12341234IF NOT (TYPE = SPECL AND CHAR = ) THEN CALL FORMERR
12351235MCBP = CBP
12361236END SCANEQL
12401240CALL MOVE(80H,.COMLEN,80H)
12411241MULTCOM = COMLEN = 0
12441244CDISK = MON2(25,0)
12461246RETRY
12511251CALL LIFTHEAD
12521252CONCNT,COLUMN = 0
12541254IF MULTCOM THEN
12551255CALL READCOM
1258
1307
1258
1307
CBP = 255
12591259IF COMLEN = 0 THEN
12601260CALL SELECT(CDISK)
12611261CALL EXIT
12651265DDISK,SDISK,PSOURCE,PDEST = 0
1266
1309
1266
1309
CALL SCAN( .DEST)
12671267IF TYPE = PERIPH THEN GO TO SIMPLECOM
1268
1289
1268
1289
IF TYPE = DISKNAME THEN
12691269DDISK = DISK - 1
1270
1287
1270
1287
CALL SCANEQL
12711271CALL SCAN( SOURCE)
12731273IF TYPE <> FILE THEN CALL FORMERR
12741274IF AMBIG THEN
12751275CALL SCANDEST(.SEARFCB)
12761276CALL MULTCOPY
12781278CALL SCANDEST(.DEST)
1282
1295
1303
1282
1295
1303
GO TO ENDCOM
12851285IF TYPE <> FILE OR AMBIG THEN CALL FORMERR
1286
1316
1286
1316
CALL SET$DDISK
12921292CALL MOVE(.DEST,.SOURCE,33)
1298
1314
1298
1314
IF TYPE = FILE THEN
12991299IF CHAR <> CR THEN GO TO SIMPLECOM
13061306SIMPLECOM:
13101310IF (TYPE < FILE) OR AMBIG THEN
13131313DHEX = FALSE
1318
1340
1318
1340
CHAR = 255
13211321IF CHAR >= NULP OR CHAR <= RDR THEN CALL ERROR(.( ))
13231323IF (PDEST .= CHAR + 1) = PUNP THEN CALL NULLS
13271327IF TYPE <> SPECL OR CHAR <> THEN
13311331C1,C2,C3 = 0
13321332COPYING = TRUE
13331333DO WHILE COPYING
13351335SCOM = FALSE
13361336IF TYPE = FILE AND NOT AMBIG THEN
13421342IF TYPE <> PERIPH OR (CHAR <= LST AND CHAR > RDR > THEN
13451345COLUMN = 0
13461346PUTNUM = TRUE
13471347SCOM = SCOM OR OBJ
13481348PSOURCE = CHAR + 1
13491349IF CHAR = NULP THEN CALL NULLS
13501350IF CHAR = EDFP THEN CALL PUTDEST(ENDFILE)
13521352IF (CHAR < HSRDR AND DHEX) THEN NEXT = 1
13541354IF PDEST = PRNT THEN
13551355TABS = 0
13551355NUMB = 1
13631363IF TYPE <> SPECL OR (CHAR <> AND CHAR <> CR) THEN
13651365COPYING = CHAR <> CR
13691369IF PDEST = PUNP THEN
13701370CALL NULLS
13721372IF PDEST = 0 THEN
13761376ENDCOM:
13771377COMLEN = MULTCOM

to top

Matching Comments and Strings
File1 Line# File2 Line# Comment/String
33P E R I P H E R A L I N T E R C H A N G E P R O G R A M
55COPYRIGHT (C) DIGITAL RESEARCH
66NOVEMBER, 1976
99COPYRIGHT (C) 1976, DIGITAL RESEARCH. PIP VERS 1.5
1111ADDRESS OF INP, DEVICE
1212ADDRESS OF OUT, DEVICE
1616SEND B TO OUT, DEVICE
2222PATCHED TO RETURN REG-A
2727WAIT FOR 50 MSEC
3131LITERAL DECLARATIONS
3333LITERALLY
34341AH
36365FH
37375BH
3737LEFT BRACKET
38385DH
3838RIGHT BRACKET
393913H
3939TRANSMIT BUFFER FUNCTION
4343POSITION OF 'PUN' + 1
4444CONSOLE
4545NUL, BEFORE INCREMENT
4646EOF, BEFORE INCREMENT
4747RDR
4747READER DEVICES
4848PRINTER
5757REEL NUMBER FIELD OF FCB
5858'HEX' BUFFER SIZE
6767REBOOT ADDRESS UPON GOMPLETION
6868COLUMN COUNT FOR PRINTER TABS
6969SET FOR AMBIGUOUS FILE REFS
7070TRUE IF PARAMETERS PRESENT
7171USED TO FEED SEARCH CHARACTERS
7272LENGTH OF FEED STRING
7373USED IN MATCHING STRINGS
7474USED TO TERMINATE QUIT COMMAND
7575NUM BUFFERS-l IN SBUFF AND DBUFF
7676CURRENT DISK
7777DEFAULT BUFFER
7878SEARCH FCB IN MULTI COPY
7979MEMORY SIZE
8080SOURCE BUFFER LENGTH
8181BEST BUFFER LENGTH
8282SOURCE BUFFER BASE
8383THE VECTORS DBUFF AND SBUFF ARE DECLARED WITH DIMENSION
84841024, BUT ACTUALLY VARY WITH THE FREE MEMORY SIZE
8585DESTINATION BUFFER
8686SOURCE BUFFER
8787SOURCE DISK
8888SOURCE IS 'GOM' FILE IF TRUE
8989DEST IS 'HEX' FILE IF TRUE
9090SOURCE FCB
9191DESTINATION FCB
9292DESTINATION DISK
9393HEX FILE BUFFER
9494NEXT HEX SOURCE CHARACTER
9696NEXT SOURCE CHARACTER
9797SET TO NSOURCE ON REAL EOF
9898NEXT DESTINATION CHARACTER
101101DESTINATION DEVICE
102102CURRENT SOURCE DEVICE
105105FALSE IF PROCESSING ONE LIKE
106106SET WHEN READY FOR NEXT LINE NJM
107107COUNTER FOR CONSOLE READY CHECK
108108LAST CHARACTER SCANNED
109109TYPE OF CHARACTER SCANNED
110110FILE NAME LENGTH
116
122
116
122
PATCHED WITH JMP 0005
127127READ CURRENT READER DEVICE
132132READ CONSOLE CHARACTER
139139WHILE TRUE
156156PRINT THE STRING STARTING AT ADDRESS A UNTIL THE
157157NEXT DOLLAR SIGN IS ENCOUNTERED
217217COMMAND BUFFER
218218MAX BUFFER LENGTH
219219CURRENT LENGTH
220220COMMAND BUFFER CONTENTS
221221TEMP CBP, COMMAND BUFFER POINTER
224224READ INTO COMMAND BUFFER
232232CHECK CONSOLE CHARACTER READY
236236INTEL IOBYTE
238238CONTROL TOGGLE VECTOR
239239ONE FOR EACH ALPHABETIC
24024000 01 02 03 04 05 06 07 08 09 10 11 12 13
241241A B C D E F G H I J K L M N
24224214 15 16 17 18 19 26 21 22 23 24 25
243243O P Q R S T U V W X Y Z
244
500
244
500
BLOCK MODE TRANSFER
245245DELETE CHARACTERS
246246ECHO CONSOLE CHARACTERS
247247HEX FILE TRANSFER
248248IGNORE,00 RECORD ON FILE
249249TRANSLATE TO LOWER CASE
250250NUMBER OUTPUT LINES
251251OBJECT FILE TRANSFER
252252QUIT COPY
253253START COPY
254254TAB SET
255255UPPER CASE TRANSLATE
256256VERIFY EQUAL FILES ONLY
257257ZERO PARITY ON INPUT
268268INTELLEC 8 INTEL/ICOM READER INPUT
271271READ THE INTEL / ICOM READER
272272DATA
273273STATUS
274274COMMAND
2762760CH
27727700H
277277STOP
279279STROBE THE READER
282282NOT READY
284284DATA READY
288288ZERO SUPPRESSION
289289LINE COUNT ON PRINTER
298298ZERO THE COMLEN IN CASE THIS IS A SINGLE COMMAND
300300DELETE ANY $$$ SUB FILES IN CASE BATCH PROCESSING
301301$$$ SUB
315315FILL THE SOURCE BUFFERS
320320SET DMA ADDRESS TO NEXT BUFFER POSIITION
324324DISK READ ERROR$
325325END - OF - FILE
326326SET HARD END-OF-FILE
335335WRITE OUTPUT BUFFERS UP TO BUT NOT INCLUDING POSITION
336336NDEST - THE LOW ORDER 7 BITS OF NDEST ARE ZERO
344344SET DMA ADDRESS TO NEXT BUFFER
346346VERIFY MODE
348348END OF EXTENT
355355DISK WRITE ERROR#
358358VERIFY DATA WRITTEN OK
359359NUMBER OF BUFFERS
361361WENT OVER CURRENT EXTENT
364364SAVE CURRENT RECORD NUMBER
366366ONE OR TWO EXTENTS WHERE WRITTEN
3683681 MAY BE (TWO'S COMPLEMENT) NEGATIVE
371371NEXT TO READ
372372FOR COMPARE
376376PERFORM COMPARISON
383383VERIFY ERROR#
385385THEN INTO NEXT EXTENT
395395WRITE BYTE B TO THE DESTINATION DEVICE GIVEN BY PDEST
398398MAY BE PAST RIGHT SIDE
402402IN CASE IT IS ALTERED
404404CASE 0 IS THE DESTINATION FILE
410410CASE 1 IS ARD (ADDMASTER)
412412CASE 2 IS IRD (INTEL/IGON)
414
568
414
568
CASE 3 IS PTR
416
571
416
571
CASE 4 IS UR1
418
574
418
574
CASE 5 IS UR2
420
577
420
577
CASE 6 IS RDR
422422NOT A CHARACTER SINK#
423
580
423
580
CASE 7 IS OUT
425
582
425
582
CASE 8 IS LPT
428
584
428
584
CASE 9 IS UL1
431431CASE 10 IS PRN (TABS EXPANDED, LINES LISTED, CHANGED TO LST)
434
588
434
588
CASE 11 IS LST
437
590
437
590
CASE 12 IS PTP
440
592
440
592
CASE 13 IS UP1
443
594
443
594
CASE 14 IS UP2
446
596
446
596
CASE 15 IS PUN
449
600
449
600
CASE 16 IS TTY
452
603
452
603
CASE 17 IS CRT
455
606
455
606
CASE 18 IS UC1
458
609
458
609
CASE 19 IS CON
485485CLEAR OUTPUT BUFFER IN BLOCK MODE TRANSM1SION
488488REMAINING PARTIAL BUFFER LENGTH
489489START OF SEGMENT NOT WRITTEN
490490CLEARS BUFFERS
492492DATA MOVED TO BEGINNING OF BUFFER
498498WRITE DESTINATION CHARACTER, CHECK TABS AND LINES
503503BUFFERS WRITTEN
504504DON'T PASS THE X-OFF
507507EXPAND TO NEXT TAB POSITION
510510STARTING BIAS ON LINE
524524MAY NEED NEWLINE NEXT TIME AROUND
531531TRANSLATE ALPHA TO UPPER CASE
532532LOWER CASE
533533TO UPPER CASE
539539TRANSLATE TO LOWER CASE ALPHA
540540TO LOWER
545545READ NEXT SOURCE CHARACTER
5485481 ... RDR+1
552552READER STOPPING
556556CONSOLE STATUS CHECK BELOW
557557SAVE IT IN CASE IT IS ALTERED
559559CASE 0 IS SOURCE FILE
564564CASE 1 IS INP
566566CASE 2 IS IRD (INTEL/ICOM)
586586CASE 10 IS PRN
593593GO TO NOTSOURCE;
598598NOT A CHARACTER SOURCE$
611611DON'T CHECK CONSOLE STATUS
614614OF CASES
615615RESTORE IOBYTE
616616COPY TO CONSOLE DEVICE
620620TEST FOR CONSOLE CHAR READY
622622SOURCE IS A COM FILE
623623ASCII
629629ABORTED$
640640GET NEXT SOURCE CHARACTER
643643MATCH START AND QUIT STRINGS
645645END HATCH
646646SAVE CURRENT CHARACTER
650650NO MATCH
655655TERMINATED WITH CR,LF,ENDF1LE
657657LOOKING FOR START
658658GET SEARCH CHARACTERS
665665LOOKING FOR START STRING
669669OTHERWISE NO MATCH, SKIP CHARACTER
671671PASS CHARACTERS TIL MATCH
674674SUBSEQUENTLY RETURN CR, LF, ENDFILE
680680OF DO FOREVER
683683SELECTED DISK
695695ADDRESS OF FCB TO FILL
696696FCB TEMPLATE
697697TEMP COUNTERS
699699SCAN LOOKS FOR THE NEXT DELIMITER, DEVICE NAME, OR FILE NAME.
700700THE VALUE OF CBP MUST BE 255 UPON ENTRY THE FIRST TIME
705705=.:,<>
714714CONTAINS AMBIGUOUS REF
718718FILL CURRENT NAME OR TYPE WITH QUESTION MARKS
720720QUESTION MARK
733733SCAN OPTIONAL PARAMETERS
735735SCAN PAST BRACKET
737737NOT ALPHA
739739BAD PARAMETER$
741741SCAN PARAMETER VALUE
743743START OR QUIT COMMAND
744744START OF STRING
764764INITIALIZE FILE CONTROL BLOCK TO EMPTY
771771DEBLANK COMMAND BUFFER
774774SAVE STARTING POSITION OF SCAN FOR DIAGNOSTICS
777777MAY BE A SEPARATOR
783783CHECK PERIPHERALS AND DISK FILES
785785CLEAR PARAMETERS
791791SCAN NEXT NAME
795795ERROR: FILE NAME TOO LONG
801801CHECK FOR DISK NAME OR DEVICE NAME
803803ALREADY SET
805805MAY BE DISK NAME A ... Z
808808ERROR: INVALID DISK NAME
809809MAY BE DISK NAME ONLY
819819MAY BE A THREE CHARACTER DEVICE NAME
820820ERROR: CANNOT BE DEVICE NAME
823823LOOK FOR DEVICE NAME
826826INPIRDPTRUR1UR2RDROUTLPTUL1PRNLST
827827PTPUP1UP2PUNTTYGRTUC1CONNULEOF
828828NOTE THAT ALL READER-LIKE DEVICES MUST BE
829829PLACED BEFORE 'RDR', AND ALL LISTING-LIKE DEVICES
830830MUST APPEAR BELOW LST, BUT ABOVE RDR. THE LITERAL
831831DECLARATIONS FOR RDR, LST, AND PUMP MUST INDICATE
832832THE POSITIONS OF THESE DEVICES IN THE LIST
839839COMPLETE MATCH
841841SCAN PARAMETERS
846846OTHERWISE TRY NEXT DEVICE
849849ERROR: NO DEVICE NAME MATCH
851851PARAMETERS FOLLOW
855855CHAR IS NOT '.', SO FILE NAME IS SET SCAN REMAINDER
856856ERROR: NO PRIMARY NAME
862862ERROR: TYPE FIELD TOO LONG
868868RESCAN DELIMITER NEXT TIME AROUND
871871DISK IS THE SELECTED DISK (1 2 3 ... )
872872DEFAULT
880880SEND 40 NULLS TO OUTPUT DEVICE
886886HOLDS DESTINATION FILE TYPE
887887TRUE WHILE COPYING TO DEST FILE
890890MOVE THREE CHARACTER EXTENT INTO DEST FCB
895895COMPARE THE STRINGS AT A AND B UNTIL EITHER A MISMATCH OR
896896A '$' IS ENCOUNTERED IN STRING B
907907RETURN TRUE IF END OF FILE
914914READ ONE RECORD INTO SBUFF AND CHECK FOR PROPER FORM
915915RETURNS 0 IF RECORD OK
916916RETURNS 1 IF END OF TAPE (:00800)
917917RETURNS 2 IF ERROR IN RECORD
919919TRUE IF XOFF RECVD
920920TRUE IF NO ERRORS IN THIS RECORD
923923PRINT ERROR MESSAGE IF NOERRS TRUE
939939READ CHARACTER AND SAVE IN BUFFER
947947RECORD TOO LONG$
950950ON ERROR FLAG
954954LOAD ADDRESS WHICH FOLLOWS :
960960INVALID DIGIT$
965965READ TWO HEX DIGITS
970970READ BYTE WITH CHECKSUM
975975READ DOUBLE BYTE WITH CHECKSUM
979979NO ERRORS DETECTED IN THIS RECORD
981981READ NEXT RECORD
982982SCAN FOR THE ':'
987987END OF FILE, CTL-Z
994994':' FOUND
996996END OF TAPE
10041004RECORD LENGTH IS NOT ZERO
10051005LOAD ADDRESS
10071007READ WORDS UNTIL RECORD LENGTH EXHAUSTED
10081008RECORD TYPE
10111011INCREMENT LA HERE FOR EXACT ADDRESS
10141014CHECK SUM
10161016CHECKSUM ERROR$
10241024READ HEX FILE FROM HIGH SPEED READER TO 'HEX' FILE.
10251025CHECK EACH RECORD FOR VALID DIGITS, AND PROPER CHECKSUM
10341034END OF TAPE ENCOUNTERED
10391039CORRECT ERROR, TYPE RETURN OR CTL-Z$
10461046INVALID FORMAT$
10511051HEX$
10521052SAVE TYPE
10531053$$$
10531053REMOVE OLD $$$ FILE
10541054CREATE A NEW ONE
10551055NO DIRECTORY SPACE$
10631063NO FILE$
10651065CAUSE IMMEDIATE READ
10661066COM$
10671067CMI$
10731073START NOT FOUND$
10751075QUIT NOT FOUND$
10791079CLEAR BUFFER
10871087WRITE PROTECTED
10881088RECALL ORIGINAL TYPTE
10891089REMOVE OLD FILE
10901090READY FOR RENAME
10911091***
10961096COMPUTE NUMBER OF BUFFERS - 1 FROM DBLEN
10981098COMPUTED AS DBLEN/12B-1, WHERE DBLEN <= 32K (AND THUS
10991099NBUF RESULTS IN A VALUE <= 2**15/2**7-1 = 2**8-1 = 255)
11031103ABSORB THE SOURCE BUFFER INTO THE DEST BUFFER
11111111SET UP SOURCE AND DESTINATION BUFFERS
11181118PERFORM THE ACTUAL COPY FUNCTION
11191119TRUE IF SBUFF AND DBUFF COMBINED
11201120BLOCK NODE
11211121ABSORB SOURCE BUFFER
11221122HEX FILE
11391139FOR ERROR TRACING
11421142FILES READY FOR DIRECT COPY
11441144LOOK FOR PARAMETERS
11491149NOT OBJ OR VERIFY
11531153COPY DIRECTLY TO DBUFF
11541154EXTEND DBUFF
11691169PRINT CURRENT FILE NAME
11821182FIND A MATCHING ENTRY
11891189FILE CONTROL BLOCK IN BUFFER
11921192NOT FOUND$
11961196GET THE FILE CONTROL BLOCK NAME TO DEST
11981198FILL BOTH FCB'S
12001200COPYING -$
12111211PARAMETERS PRESENT
12351235FOR ERROR PRINTING
12381238BUFFER AT 80H CONTAINS REMAINDER OF LINE TYPED
12391239FOLLOWING THE COWHAND 'PIP' - IF ZERO THEN PROMPT TIL CR
12431243GET CURRENT DISK
12471247ENTER HERE ON ERROR EXIT FROM THE PROCEDURE 'ERROR'
12491249MAIN PROCESSING LOOP. PROCESS UNTIL CR ONLY
12521252PRINTER TABS
12531253READ FROM CONSOLE IF NOT A ONELINER
12591259SINGLE CARRIAGE RETURN
12641264LOOK FOR SPECIAL CASES FIRST
12721272MAY BE MULTI COPY
12791279FORM IS A:=B: UFN
12971297MAY BE POSSIBLE TO DO A FAST DISK COPY
1298
1300
1298
1300
FILE TO FILE
13071307READY FOR RESCAN
13081308OTHERWISE PROCESS SIMPLE REQEST
13101310DELIMITER OR ERROR
13111311UNRECOGNIZED DESTINATION$
13151315DESTINATION IS A FILE, SAVE EXTENT NAME
13201320PERIPHERAL NAME
13211321CANNOT WRITE$
13251325NOW SCAN THE DELIMITER
13281328INVALID PIP FORMAT$
13301330OTHERWISE SCAN AND COPY UNTIL CR
13311331CLEAR LINE COUNTERS
13361336A SOURCE FILE
13431343CANNOT READ$
13461346CAUSES IMMEDIATE NEWLINE IF NUMB SET
13471347MAY BE ABSOLUTE COPY
13511351DISK COPY
13531353HEX FILE SET IF SOURCE IS RDR AND DEST IS HEX FILE
13611361READ ENDFILE, GO TO NEXT SOURCE
13641364INVALID SEPARATOR$
13681368IF NECESSARY, CLOSE FILE OR PUNCH TRAILER
13721372FILE HAS TO BE CLOSED AND RENAMED
13751375COMLEN SET TO 0 IF NOT PROCESSING MULTIPLE COMMANDS
13791379DO FOREVER

to top

Matching Instruction Sequences
File1 Line# File2 Line# Number of matching instructions
1 1 1210
424 436 13
424 448 13
426 569 12
426 601 12
436 424 13
436 448 13
438 569 12
438 601 12
448 424 13
448 436 13
450 569 12
450 601 13
569 426 12
569 438 12
569 450 12
569 601 12
601 426 12
601 438 12
601 450 13
601 569 12

to top

Matching Identifiers
0000 0000$0100B 0000$1000B 0001$0000B 0010$0000B 0011$0000B 01B 0FF00H
0FF80H 0FFFFH 0FFH 0H 10 10$0000B 1000$0000B 101$1111B
1024 106H 11 110$0001B 1100$0000B 1100B 111$1010B 1111B
11B 12 127 128 13 130 14 15
16 17 18 183H 19 20 21 22
23 25 250 255 26 32 33 39
3H 4000H 5CH 6H 7F80H 7FH 80H 8BH
AHD AMBIG BLOCK BUFFER C1 C2 C3 CBP
CBUFF CDISK CHAR CHECK$DISK CHECK$EOL CHECK$STRINGS CHECKXOFF CHKSET
CLEARBUFF CLOSE CLOSEDEST COLUMN COMBUFF COMLEN CONBRK CONCHK
CONCNT CONL CONP CONT COPYCHAR COPYFCB COPYING COPYRIGHT
CPIO CR CRLF CS DATAOK DBLEN DBUFF DCNT
DDISK DEBLANK DEC DEL DELET DELETE DELIMITER DESK
DEST DHEX DISK DISKNAME DISKREAD DISKWRITE DMA DOUBLE
ECHO EDFP ENDCOM ENDFILE EOFP EQUAL ERR ERROR
EXIT EXTCNT F1 FALSE FASTCOPY FCB FCBA FEEDBASE
FEEDLEN FEXT FEXTH FEXTL FILE FILLQ FILLSOURCE FLEN
FNAM FNSIZE FOREVER FORMERR FREEL FSIZE GETFCB GETSOURCE
GETSOURCEC GNC HA HARDEOF HBUFF HBUFS HDEST HEXRECORD
HSOURCE HSRDR IGNOR INITIALIZE INP INPLOC INPUT INTIN
IO IOB IOBYTE KBUFF L1 L2 LA LAST
LB LDA LEN LF LIFTHEAD LIT LOW LOWER
LST LSTL LTRAN MAKE MATCH MATCHLEN MAXLEN MCBP
MDISK MEMORY MEMSIZE MON MON1 MON2 MOVE MOVEXT
MULTCOM MULTCOPY NA NAME NBUF NBUFF NCOPIED NDEST
NEWLINE NEXT NEXTDIR NOERRS NOTDEST NOTSOURCE NSIZE NSOURCE
NULLS NULP NUMB OBJ OPEN OUT OUTLOC OUTPUT
PARSET PDEST PERIPH PIPMOD PLB PRINT PRINT1 PRINTCHAR
PRINTCMAR PRINTDIG PRINTERR PRNAME PRNT PSOURCE PTPH PTRC
PTRG PTRH PTRI PTRS PUMP PUNL PUNP PUTCHAR
PUTDESK PUTDEST PUTDESTC PUTNUM QUITLEN QUITS RB RDR
RDRL READ$EOF READADDR READBYTE READCHAR READCOM READCS READHEX
READRDR READTAPE REAL$EOF REALEOF RENAME RESIZED RETRY RL
ROL RT SA SAVECHAR SB SBASE SBLEN SBUFF
SCAN SCANDEST SCANEQL SCANPAR SCOM SDISK SEARCH SEARCHN
SEARFCB SELECT SET$DBLEN SET$DDISK SET$SDISK SETDMA SETUPDEST SETUPSOURCE
SHL SHR SIMPLECOM SIMPLECOPY SIZE$MEMORY SIZE$NBUF SOURCE SPECL
STARTS TAB TABS TCBP TIME TIMEOUT TRUE TYPE
UPPER UTRAN VERIF WHAT WRITEDEST XOFF XOFFSET ZEROP
ZEROSUP

to top

Partially Matching Identifiers
*** NONE ***
to the top
SCORE 100

CodeSuite copyright 2003-2016 by Software Analysis and Forensic Engineering Corporation